﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Library.Logic;

namespace Library.Linq.Expressions
{
    public class EntailsExpression : Expression
    {
        internal EntailsExpression(Expression left, Expression right, Expression reasoner)
        {
            this.left = left;
            this.right = right;
            this.reasoner = reasoner;
        }

        Expression left;
        Expression right;
        Expression reasoner;

        public Expression Left
        {
            get
            {
                return left;
            }
        }
        public Expression Right
        {
            get
            {
                return right;
            }
        }
        public Expression Reasoner
        {
            get
            {
                return reasoner;
            }
        }

        public override ExpressionType NodeType
        {
            get
            {
                return ExpressionType.Extension;
            }
        }
        public override Type Type
        {
            get
            {
                return typeof(bool);
            }
        }
        public override bool CanReduce
        {
            get
            {
                return true;
            }
        }
    }
}
